package cn.bjit.db;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class ObjectFactory {
    // 用于存放“对象名--实现类的全名”这种对应关系的键值对集合
    private static Properties properties;

    static {
        properties=new Properties();
        // 读取配置文件 ObjectFactory.properties，具体代码略。
        InputStream inStream=ObjectFactory.class.getClassLoader().getResourceAsStream("test.properties");
        try {
            properties.load(inStream);
            inStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    // 可创建对象实例的工厂方法，接受的参数是对象名，如UserDao、RoleDao等
    public static Object createInstance(String name) throws Exception {
        // 首先根据名称获取对应的实现类的类名，要是全限定名才行（带包名的）
        String implClassName = properties.getProperty(name);
        // 通过反射生成实例并返回（没有处理异常）
            return Class.forName(implClassName).newInstance();
    }
}
